package dao;

import javax.persistence.EntityManager;
import model.Compra;
import model.ItemCompra;
import model.Produto;

public class CompraDAO {

    private final EntityManager em;

    //Precisa deste método construtor para passar o parâmetro que vem do EJB
    public CompraDAO(EntityManager emDAO) {
        this.em = emDAO;
    }

    public void gravar(Compra compra) {
        em.persist(compra);
        retiraEstoque(compra);
    }

    public boolean atualizar(Compra compra) {
        em.merge(compra);
        return true;
    }

    private void retiraEstoque(Compra compra) {
        for (ItemCompra item : compra.getItens()) {
            Produto produto = item.getProduto();
            produto.diminuirEstoque(item.getQuantidade());
            em.merge(produto);
        }
    }

    public boolean verificaEstoque(Compra compra) throws Exception {
        for (ItemCompra item : compra.getItens()) {
            Produto produto = item.getProduto();
            if ((produto.getQtdEstoque() - item.getQuantidade()) < 0) {
                throw new Exception("Produto "
                        + produto.getCodigo()
                        + produto.getDescricao().trim()
                        + " sem estoque!");
            }
        }
        return true;
    }
}
